// pages/myPersonalData/myPersonalData.js
import { shareOptions } from "../../utils/access";
import request from "../../utils/request";
import tim from "../../utils/tim/tim";
import { getStorage, setStorage, jump } from "../../utils/utils"
const api = require("../../config/api");
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 昵称弹出层
    textNameShow: false,
    buttons: [
      {
        text: '保存',
      }
    ],
    // 用户昵称
    userName:'',
    // 昵称弹出层输入框的值
    textNameInputValue:'',
    // 生日弹出层
    birthday:'',
    // 性别单选框循环的数据
    sexData:[
      {value:0,sex:'保密',checked:false},
      {value:1,sex:'男',checked:false},
      {value:2,sex:'女',checked:false}
    ],
    // 是否认证，0：未认证，1：审核中 2:审核通过或不通过，目前显示空
    complete:0,
    // 用户id
    userId: '',
    // 认证居住地
    authorizeAddress: ''
  },
  //1.1 显示昵称弹出层
  textNameBtn(){
    this.setData({
      textNameShow:true
    })
  },
  // 1.2 昵称弹出层确定按钮的回调
  textNameBtns(e) {
      console.log('用户点击了确定按钮')
      // 1.2.1 判断文本框是否为空，为空提示用户
      let { textNameInputValue } = this.data
      // 1.2.2 如果输入内容开头为空格，替换为空字符串
      textNameInputValue = textNameInputValue.replace(/(^\s*)/,'')
      if (textNameInputValue === ''){
        return wx.showToast({
          title: '文本框不能为空',
          icon: 'error'
        })
      }
      this.sendTextNameInputValue()
    this.setData({
      textNameShow: false,
    })
  },
  // 1.3 监听昵称弹出层输入框改变事件
  textNameInput(e){
    this.setData({
      textNameInputValue:e.detail.value
    })
  },
  // 1.4 将昵称文本发送给后端服务器
  async sendTextNameInputValue(){
    let { textNameInputValue } = this.data
    console.log(textNameInputValue)
    // 1.4.1 发送请求，更改昵称
    const res = await request.post(api.updateUser,{
      nickName:textNameInputValue
    },{loading:false})
    console.log(res)
    // 1.4.2 修改缓存中的数据
    const userInfo = getStorage('userInfo')
    userInfo.nickName = textNameInputValue
    console.log(userInfo,'即将存储到缓存中的值')
    setStorage('userInfo', userInfo)
    // 更新tim用户信息
    tim.updateUser()
    // 1.5 将文本框置空
    this.setData({
      userName:textNameInputValue,
      textNameInputValue:''
    })
  },
  // 2.1 生日弹出层值的获取
  async bindDateChange(e){
    console.log(e.detail.value,'生日改变的值')
    const res = await request.post(api.updateUser,{
      birthday:e.detail.value
    },{loading:false})
    console.log(res)
    this.setData({
      birthday: e.detail.value,
      // [`formData.date`]: e.detail.value
  })
  },
  // 3.1 性别单选框改变事件
  async radioChange(e){
    console.log('性别改变后的值', e.detail.value)
    const gender = parseInt(e.detail.value)
    const res = await request.post(api.updateUser,{
      gender:gender
    },{loading:false})
    console.log(res)
  },
  // 4.1 跳转我的小区页面
  to(){
    console.log(1)
    wx.navigateTo({
      url: `/pages/idleCommunity/idleCommunity`,
    })
  },
  // 5.1 跳转认证信息页面 ,需要携带complete，判断是立即提交 或 修改资料
  go(){
    const { complete } = this.data
    if (complete === 0){
      jump('residenceCertification', { isComplete: false })
    } else if (complete === 2 || complete === 3){
      jump('residenceCertification', { isComplete: true })
    }
  },
  // 6.1 获取用户数据
  async getUserData(){
    const { sexData } = this.data
    console.log(123)
    const res = await request.get(api.getUser,{loading:false})
    console.log(res)
    // 6.2 处理性别数组里面的数据
    sexData.map((item)=>{
      if(item.value === res?.data?.gender){
        item.checked = true
      }
      if(item.value!== res?.data?.gender){
        item.checked = false
      }
    })
    // 6.3 处理生日数据 , 未设置返回null  已设置的生日返回值 需要进行处理，去掉时分秒
    let trueBirthday = null
    if (res?.data?.birthday === null){
      trueBirthday = null
    }else{
      const newBirthday = res?.data?.birthday?.split(' ')
      console.log(newBirthday)
      trueBirthday = newBirthday[0]
    }
    if(res.data.complete === 2){
      this.getInfo()
    }
    this.setData({
      userName: res?.data?.nickName,
      userId: res.data.id,
      birthday: trueBirthday,
      complete: res?.data?.complete,
      sexData,
    })
  },
  // 获取认证居住地信息
  async getInfo() {
    const { userId } = this.data
    const res = await request.get(api.homeDetail, { userId }, { loading: false })
    this.setData({
      authorizeAddress: res.data.verifyCommunityName
    })
  },
  // 7.1 跳转帮助页面
  help(){
    console.log(1)
    wx.navigateTo({
      url: '/pages/help/help',
    })
  },
  // 跳转设置昵称页面
  handleChangeNickname(){
    jump('nickNameInfo',{
      nickName: this.data.userName
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function () {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.getUserData()

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  // 用户点击右上角分享
	onShareAppMessage(e) {
		return shareOptions('default', e)
	},
})